import axios from 'axios'
import { Message } from 'iview';
import { exit } from '@/utils/Common';

const serves = axios.create({
    headers: {
        'content-type': 'application/json'
    },
    baseURL: 'http://localhost:62347/'
});

window.setBaseUrl = function (url) {
    serves.defaults.baseURL = url;
}

import store from '../store';

// 设置请求发送之前的拦截器
serves.interceptors.request.use(config => {
    // 设置发送之前数据需要做什么处理
    config.headers.Authorization = store.state.user.Password;
    return config
}, err => Promise.reject(err))

// 设置请求接受拦截器
serves.interceptors.response.use(res => {
    // 设置接受数据之后，做什么处理
    const { data: { ErrorCode, ErrorMessage, Result, Success, Total }, headers: { newtoken } } = res;
    newtoken && store.commit('setToken', newtoken);
    if (Success === false) {
        Message.error(ErrorMessage);
        return Promise.reject({ code: ErrorCode, msg: ErrorMessage });
    }
    if (typeof Total === 'number') {
        return { Total, Result };
    }
    return Result;
}, err => {
    // 判断请求异常信息中是否含有超时timeout字符串
    if (err.message.includes('timeout')) {
        Message.error('网络超时')
    }
    if (err.message.includes('Network Error')) {
        Message.error('服务端未启动或网络连接错误')
    } else {
        try {
            const { status } = err.response;
            switch (status) {
                case 401:
                    Message.error("登录超时，请重新登录");
                    exit();
            }
        } catch (error) { }
    }
    return Promise.reject(err)
})

// 将serves抛出去
export default serves